const fs = require('fs')
const argumentsVal = process.argv
const name = argumentsVal[2]
if (name) {
    // 创建基础模板
    const createFilePath = `./src/views/${name}`
    const fmtName = name.replaceAll('-', '')
    try {
        fs.statSync(createFilePath)
        console.log('已存在同名文件夹,自动跳过')
    } catch (error) {
        console.log('开始创建文件夹')
        fs.mkdir(createFilePath, (err) => {
            if (err) {
                console.log(`创建${createFilePath}失败,请手动创建`)
            } else {
                console.log(`${createFilePath}创建成功`)
                // 开始创建模板文件
                const listTemplate = getTableTemplate()
                creatTemplate(createFilePath, `${name}List`, listTemplate)
                // 添加路由
                fs.readFile('./src/router/index.js', 'utf-8', (err, data) => {
                    if (err) {
                        console.log('读取路由文件失败，请手动创建')
                        throw err
                    } else {
                        const routerItem = `
                        {
                            path:'/${fmtName}',
                            name: '${fmtName}',
                            meta: {
                                title: '${fmtName}'
                            },
                            component: () => import('../views/${name}/${name}List.vue')
                        }
                        `
                        const text = data.replace(`]`, `,${routerItem}]`)
                        fs.writeFile('./src/router/index.js', text, () => {
                            console.log(`模板文件创建成功,用/${fmtName}访问`)
                        })
                    }
                });
            }
        })
    }
}
// 空白模板
function getTemplate(name) {
    const template = `
  <template>
  </template>
  <script setup></script>
  <style scoped></style>
  `
    return template
}
// 列表模板
function getTableTemplate() {
    const template = `
  <template>
    <LsTable
      :loading="tableConfig.loading"
      :data="tableConfig.data"
      :paging="tableConfig.paging"
      :config="tableConfig.config"
      @current-change="getDataList"
      @view="handleView"
      @handleselection="handleSelectData"
    >
    </LsTable>
  </template>
  <script setup>
  import { ref } from 'vue'
  // 表格的配置
  const tableConfig = ref({
    config: [
      {
        type: 'selection',
        label: '全选'
      },
      {
        label: '标题一',
        prop:'key1'
      },
      {
        label: '标题二',
        prop:'key2'
      },
      {
        label: '标题三',
        prop:'key3'
      },
      {
        label: '操作',
        type: 'button',
        width: '90px',
        buttons: [
          {
            name: '查看',
            event: 'view',
            link: true,
            type: 'primary'
          }
        ]
      }
    ],
    data: [],
    // 分页功能
    paging: {
      // 分页参数 没有分页可不传
      page: 1, // 当前页
      size: 10, // 页面大小
      total: 0, // 总条数
      pagerCount: 7, // 设置最大页码数 (大于等于 5 且小于等于 21 的奇数)
      autoSize: true // 设置根据屏幕高度自动改变每页显示行数
    },
    loading: false // 设置table加载中样式
  })
  // 查看
  const handleView = (row) => {
    console.log('点击了查看')
  }
  // 选中数据
  const selectData = ref([])
  const handleSelectData = (e) => {
    console.log(e)
    selectData.value = e
  }
  </script>
  <style scoped></style>
  
  `
    return template
}

function creatTemplate(filePath, name, template) {
    fs.writeFile(`${filePath}/${name}.vue`, template, (error) => {
        if (error) {
            console.log(`创建${filePath}/${name}.vue失败,请手动创建`)
        } else {
            console.log(`创建${filePath}/${name}.vue成功！`)
        }
    })
}
